#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "coreextract.h"
#include <QGraphicsRectItem>//绘制矩形
#include <QGraphicsLineItem>//绘制线段

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 初始化画布场景
    m_scene = new QGraphicsScene(this);
    ui->graphicsView->setScene(m_scene);

   //绘制题目固定线段
    drawFixedLines();

    // 连接按钮触发计算
    connect(ui->btnExtract, &QPushButton::clicked, this, &MainWindow::extractRects);
}

MainWindow::~MainWindow()
{
    delete ui;
}

// 绘制题目固定线段（L0~L5）
void MainWindow::drawFixedLines()
{
    QList<QPair<QPoint, QPoint>> lines = {
        {{0,0}, {10,0}},   // L0
        {{0,0}, {0,5}},    // L1
        {{0,5}, {10,5}},   // L2
        {{3,0}, {3,12}},   // L3
        {{3,12}, {10,12}}, // L4
        {{10,0}, {10,12}}  // L5
    };

    for (const auto& line : lines) {
        m_scene->addLine(line.first.x(), line.first.y(),
                        line.second.x(), line.second.y(),
                        QPen(Qt::black, 2)); // 黑色线段，宽度 2
    }
}

// 点击按钮：提取矩形 + 显示结果
void MainWindow::extractRects()
{
    // 1. 调用核心逻辑
    QList<QRect> rects = CoreExtract::getRects({});

    // 2. 清空之前的结果
    m_scene->clear();
    ui->listWidgetResult->clear();

    // 3. 显示矩形：画布 + 列表
    for (int i = 0; i < rects.size(); ++i) {
        const QRect& rect = rects[i];
        // 3.1 画布绘制（半透明红色矩形）
        QGraphicsRectItem* rectItem = m_scene->addRect(rect,
                                                      QPen(Qt::red, 2) );
        // 3.2 列表显示坐标
        ui->listWidgetResult->addItem(QString("Rect%1: (%2,%3)-(%4,%5)")
                                      .arg(i)
                                      .arg(rect.x()).arg(rect.y())
                                      .arg(rect.right()).arg(rect.bottom()));
    }
}
